package nidea;
import java.sql.*;
// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.6776E146-810F-2BB7-4D84-63EEAECD7B28]
// </editor-fold> 
/**
 * Clase Problema para el Sistema N-idea
 * @author Deskalsoft
 */
public class Problema {

    /**
     * Variable privada tipo String para poner el titulo
     */
    private String titulo;

    /**
     * Variable privada tipo String para poner la categoria
     */
    private String categoria;

    /**
     * Variable privada tipo String para poner el topico
     */
    private String topico;

    /**
     * Variable privada tipo String para describir el problema
     */
    private String descripcionProblema;

    /**
     * Variable privada para identificar el problema
     */
    private int idProblema;

    /**
     * Variable privada para identificar la empresa
     */
    private int idEmpresa;
    
    /**
     * Constructor vacio del problema
     */
    public Problema(){        
    }
    
    /**
     * Constructor del Problema
     * @param ti es el titulo del problema
     * @param cat es la categoria del problema
     * @param top es el topico del problema
     * @param des es la descripcion del problema
     * @param idProb es el identificador del problema
     * @param idEmp es el identificador de la empresa
     */
    public Problema(String ti, String cat, String top, String des, int idProb, int idEmp){
        titulo=ti;
        categoria=cat;
        topico=top;
        descripcionProblema=des;
        idProblema=idProb;
        idEmpresa=idEmp;
    }
    /**
     * Metodo que regresa un identificador libre
     * @return int
     */
    public int indice(){
        String error;
        int i=1;
        try{
            DBConexion cp= new DBConexion();
            String sql= "SELECT idproblema FROM problemabd ORDER BY idproblema;";
            ResultSet resultado=cp.getRS(sql);
            while(resultado.next()){
                if(i !=resultado.getInt("idproblema")){
                    return i;
                }
                i++;
            }            
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion,favor de intentar mas tarde";
        }
        return i;
    }
    
    

    /**
     * Metodo que publica un problema en el sistema N-idea
     * @param titulo es el titulo del problema
     * @param categoria es la categoria del problema
     * @param topico es el topico del problema
     * @param descripcionProb es la descripcion del problema
     * @param idEmpresa es el identificador de la empresa
     * @return Problema
     */
    public Problema publicarProblema (String titulo, String categoria, String topico, String descripcionProb, int idEmpresa) {      
        int idproblem=indice();
        String error="e";
        PreparedStatement stmt=null;
        int updateQuery=0;

        try{            
        DBConexion cp = new DBConexion(); 
        cp.abrirConexion();
        String sql= "INSERT INTO problemabd (idproblema,idempresa,titulo,categoria,topico,descripcionproblema) VALUES (?,?,?,?,?,?);";
        stmt=cp.con.prepareStatement(sql);
        stmt.setInt(1, idproblem);
        stmt.setInt(2, idEmpresa);
        stmt.setString(3, titulo);
        stmt.setString(4, categoria);
        stmt.setString(5, topico);
        stmt.setString(6, descripcionProb);
        updateQuery=stmt.executeUpdate();
        stmt.close();
        cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intertar mas tarde";
        }
       Problema pp=new Problema(titulo,categoria,topico,descripcionProb,idproblem,idEmpresa);
       return pp;
    }
        
    /**
     * Metodo que modifica un problema en el sistema N-idea
     * @param titulo es el titulo del problema
     * @param categoria es la categoria del problema
     * @param topico es el topico del problema
     * @param descripcionProblema es la descripcion del problema
     * @param idProblema es el identificador del problema
     * @param idEmpresa es el identificador de la empresa
     * @return Problema
     */
    public Problema modificarProblema (String titulo, String categoria, String topico, String descripcionProblema, int idProblema, int idEmpresa) {
        String error="e";
        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET titulo= '"+titulo+"', categoria= '"+categoria+"', topico= '"+topico+"', descripcionproblema='"+descripcionProblema+"' WHERE idproblema= "+idProblema+" AND idempresa="+idEmpresa+";");            
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }        
        Problema pp=new Problema(titulo,categoria,topico,descripcionProblema,idProblema,idEmpresa);
        return pp;
    }

    /**
     * Metodo que borra un problema del sistema N-idea
     * @param idProblema es el identificador del problema
     */
    public void borrarProblema (int idProblema) {
        String error="Error";
        try{
            DBConexion cp=new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();           
            int resultado=stmt.executeUpdate("DELETE FROM problemabd WHERE idproblema="+idProblema+";");
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }       
    }

    /**
     * Metodo que busca ideas o problemas en el sistema N-idea
     * @param topico es el topico del problema
     * @return Problema
     */
    public Problema buscarIdeasoProblemas (String topico) {
        return null;
    }

    /**
     * Metodo que pone un titulo en el problema 
     * @param titulo es el titulo del problema
     */
    public void setTitulo (String titulo) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET titulo= '"+titulo+"';");            
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }    
    }

    /**
     * Metodo que obtiene el titulo del problema
     * @return titulo
     */
    public String getTitulo () {
        return titulo;
    }

    /**
     * Metodo que pone la categoria del problema
     * @param categoria es la categoria del problema
     */
    public void setCategoria (String categoria) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET categoria= '"+categoria+"';");            
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }    
    }

    /**
     * Metodo que obtiene la categoria del problema
     * @return categoria
     */
    public String getCategoria () {
        return categoria;
    }

    /**
     * Metodo que pone el topico del problema
     * @param topico es el topico del problema
     */
    public void setTopico (String topico) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET topico= '"+topico+"';");
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }    
    }

    /**
     * Metodo que regresa el topico del problema
     * @return topico
     */
    public String getTopico () {
        return topico;
    }

    /**
     * Metodo que pone la descripcion del problema
     * @param descripcion es la descripcion del problema
     */
    public void setDescripcionProblema (String descripcion) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET descripcionproblema= '"+descripcion+"';");
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }    
    }

    /**
     * Metodo que obtiene la descripcion del problema
     * @return descripcionProblema
     */
    public String getDescripcionProblema () {
        return descripcionProblema;
    }

    /**
     * Metodo que pone el identificador de la empresa
     * @param idEmpresa es el identificador de la empresa
     */
    public void setIdEmpresa (int idEmpresa) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET idempresa= '"+idEmpresa+"';");
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }
    }

    /**
     * Metodo que obtiene el identificador de la empresa
     * @return idEmpresa
     */
    public int getIdEmpresa () {
        return idEmpresa;
    }

    /**
     * Metodo que pone el identificador del problema
     * @param id es el identificador del problema
     */
    public void setIdProblema (int id) {
        String error="e";        
        try{
            DBConexion cp= new DBConexion();
            cp.abrirConexion();
            Statement stmt=cp.con.createStatement();
            ResultSet resultado=stmt.executeQuery("UPDATE problemabd SET idproblema= '"+id+"';");            
            stmt.close();
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion, favor de intentar mas tarde";
        }
    
    }

    /**
     * Metodo que obtiene el identificador del problema
     * @return idProblema
     */
    public int getIdProblema () {
        return idProblema;
    }

}